# coding: utf-8
# @Author: ChuiZi


def callSelf(FuncName, *args, **kwargs):
    """调用与入参相同名称的内部方法,通过debug=True开启调试模式

    :param FuncName: 要调用自身的方法名,例如callSelf(func),注意,使用映射也应该是如例:dic={"case1":func},里边是一个不带括号执行符的方法名
    :param args: 入参
    :param kwargs: 入参
    """
    try:
        return FuncName(*args, **kwargs)
    except TypeError:
        try:
            return FuncName()
        except TypeError as err:
            raise TypeError(f"输入的方法名不能是字符串而应该是方法名,请删除使用本方法的第一个参数的双引号")


if __name__ == '__main__':
    def sayHellow():
        print("hellow")


    def sayHellow2(*args):
        print("hellow")


    callSelf(sayHellow, 123, 432, 123)
